#include "list.h"

#ifndef HASH_TABLE_H

#define HASH_TABLE_H

typedef struct hash_table
{
        list_node_t** array;
        int size;       
} hash_table_t;

/* создает хеш-таблицу и возвращает указатель на нее */
hash_table_t* hash_table_construct(int hash_table_size);

/* уничтожает хеш-таблицу */
void hash_table_destruct(hash_table_t* hash_table);

/* возвращает 0, если значение по ключу key найдено и записывает 
это значение в value; возвращает 1, если значения по ключу key не найдено */ 
int hash_table_find(hash_table_t* hash_table, int key, int* value);

/* добавляет в хеш-таблицу значение value с ключем key и возвращает 0.
если число уже было, то возвращает 1 */
int hash_table_add(hash_table_t* hash_table, int key, int value);

/* удаляет элемент с ключем key из хеш-таблицы */
void hash_table_del(hash_table_t* hash_table, int key);

#endif
